<?php
//控制反转：电脑类不直接依赖于具体的usb，不受具体的usb对象控制，而是依赖于UsbChoose类，受第三方类UsbChoose类的控制
class Computer
{
    private $computer;
    private $usb;

    private $powerOn = true;

    //依赖注入：具体的usb对象通过构造函数注入到computer类中，而不是直接在computer创建
    public function __construct($computer,$usb)
    {
        $this->computer = $computer;
        $this->usb = $usb;
    }

    public function useKeyboard()
    {
        // 使用键盘写代码
        ($this->usb)->writeCode($this->computer);
    }

    public function useMouse()
    {
        // 使用鼠标画图
        ($this->usb)->paintWithMouse($this->computer);
    }

    public function useUDisk()
    {
        // 使用 U 盘存储
        ($this->usb)->storageWithUDisk($this->computer);
    }
}
